import machine
import time

# 定义触发和回声引脚的GPIO编号
trig_pin = 15
echo_pin = 2

# 初始化引脚，TRIG为输出，ECHO为输入
trig = machine.Pin(trig_pin, machine.Pin.OUT)
echo = machine.Pin(echo_pin, machine.Pin.IN)


# 函数测量距离
def measure_distance():
    # 发送一个10us的高电平来激活模块
    trig.value(0)
    time.sleep_us(2)
    trig.value(1)
    time.sleep_us(10)
    trig.value(0)

    # 等待回声引脚高电平的响应
    while echo.value() == 0:
        pass
    start = time.ticks_us()

    # 等待回声引脚低电平的响应
    while echo.value() == 1:
        pass
    end = time.ticks_us()

    # 计算声波往返的时间，单位为微秒
    duration = time.ticks_diff(end, start)

    # 声速在空气中速度（约340米/秒），计算距离（单位为米）
    # 时间需要除以2，因为声波要往返一次
    distance = (duration / 2) * 340.0 / 10000  # 转换为厘米

    return distance


# 使用函数示例
while True:
    distance = measure_distance()
    print("Distance:", distance, "cm")
    time.sleep(1)
